#ifndef __PVMDRIVER_H__
#define __PVMDRIVER_H__

#include "lib/drivers/pvmdriverinterface.h"
#include "lib/drivers/pvmdeviceinterface.h"

typedef struct _IPVMDriverDesc {
	pvm_int32 (*DriverNameShort)(pvm_char* buffer, pvm_uint32 maxLength);
	pvm_int32 (*DriverNameFull)(pvm_char* buffer, pvm_uint32 maxLength);
	pvm_uint32 (*DriverTypeAndFlags)();
	IPVMDriverBase* (*DriverLoad)();
} IPVMDriverDesc;

pvm_int32 PVMCopyDriverName(const pvm_char* srcBuf, pvm_char* dstBuffer, pvm_uint32 dstMaxLength);

void PVMDriversInit();

pvm_int32 PVMDriversCount();
pvm_int32 PVMDriverNameShort(pvm_int32 driverNum, pvm_char* buffer, pvm_uint32 maxLength);
pvm_int32 PVMDriverNameFull(pvm_int32 driverNum, pvm_char* buffer, pvm_uint32 maxLength);
pvm_uint32 PVMDriverTypeAndFlags(pvm_int32 driverNum);

pvm_bool PVMDriverLoad(pvm_int32 driverNum);
void PVMDriverUnload(pvm_int32 driverNum);
void PVMDriverUnloadAll();

IPVMDriverBase* PVMDriverGet(pvm_int32 driverNum);
#endif
